import axios from 'axios' // 引入axios
// eslint-disable-next-line
// import QS from 'qs.js' // 引入qs
import router from '../router' // 引入路由
import { Toast, Dialog } from 'vant'
import { GetQueryString } from '../commonTools/commonTool' // 引入vant-ui

// 点击提示
// eslint-disable-next-line

// 清除微信页面cookie缓存
const handleClareCookie = () => {
  VueCookies.remove('hasLogin')
  VueCookies.remove('userToken')
}

// 创建axios实例
var instance = axios.create({
  timeout: 5000, // 请求超时时间
  responseType: 'json', // 请求数据类型
  withCredentials: false // 是否跨域
})

// 设置请求头
instance.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'
// instance.defaults.headers.post['Content-Type'] = 'application/json'

// 请求拦截
instance.interceptors.request.use(
  config => {
    // 登录流程控制中，根据本地是否存在token判断用户的登录情况
    // 但是即使token存在，也有可能token是过期的，所以在每次的请求头中携带token
    // 后台根据携带的token判断用户的登录情况，并返回给我们对应的状态码
    // 而后我们可以在响应拦截器中，根据状态码进行一些统一的操作。
    const token = window.sessionStorage.getItem('userToken')
    // const token = process.env.VUE_APP_USER_TOKEN
    if (token != null || token !== undefined) {
      // 让每个请求携带自定义token 请根据实际情况自行修改
      // config.headers['weChat-token'] = token
      config.headers['WE-CHAT-USER-HEADER'] = token
      config.headers['IS-APP'] = false
    }
    if (config.isHeader) {
      config.headers['Content-Type'] = 'application/json'
    }
    // if (config.headers['Content-Type'] !== 'multipart/form-data') {
    //   if (config.data) {
    //     config.data = Qs.stringify(config.data, { arrayFormat: 'brackets' })
    //   }
    // }
    return config
  },
  error => Promise.error(error)
)
// 响应拦截器
instance.interceptors.response.use(
  response => {
    let isIntercept = intercept(response.data.status, response.data.msg)
    if (!isIntercept) {
      response.success = false
      return Promise.reject(response)
    }
    response.success = true
    return response
  }
  // error => {
  //   alert(error)
  //   MessageBox({
  //     message: '网络请求异常,请稍后重试!',
  //     type: 'error',
  //     duration: 3 * 1000
  //   })
  //   return Promise.reject(error)
  // }
)

// 拦截状态码
let intercept = (status, msg) => {
  let shareUserCode = GetQueryString('shareUserCode') || ''
  let getCircleId = GetQueryString('circleId') || ''
  // alert(status)
  if (status === 50000) {
    Toast({ message: msg, duration: 1500 })
    handleClareCookie()
    setTimeout(() => {
      router.push({ path: '/', query: { isCrice: 1, shareUserCode: shareUserCode, circleId: getCircleId } })
    }, 1600)
    // setTimeout(() => {
    //   let currentUrl = sessionStorage.getItem('currentUrl') || window.location.href.split('?')[0]
    //   window.location.href = currentUrl
    // }, 1000)
  }
  if (status === 4000) {
    Toast({ message: msg || '系统繁忙，请稍后重试！', duration: 1500 })
    setTimeout(() => {
      router.push({ path: '/', query: { isCrice: 1, shareUserCode: shareUserCode, circleId: getCircleId } })
    }, 1600)
    return false
  }
  if (status === 10004) {
    Toast({ message: msg || '系统繁忙，请稍后重试！', duration: 1500 })
    setTimeout(() => {
      router.push({ path: '/', query: { isCrice: 1, shareUserCode: shareUserCode, circleId: getCircleId } })
    }, 1600)
    return false
  }
  if (status === 4001) {
    // 提示用户下载app
    Dialog.alert({ title: '提示', message: msg })
      .then(() => {
        // on confirm 点击确认
        handleClareCookie()
        window.location.href = process.env.VUE_APP_DOWN_URL
      })
    return true
  }
  if (status !== 0) {
    Toast({ message: msg || '系统繁忙，请稍后重试！', duration: 3000 })
    return false
  }
  return true
}
export default instance
